package com.hf.db;

import java.sql.*;

public class TestDriver {
    public static void main(String[] args) {
        test01();
        System.out.println("===========================");
        test02();
    }
    /**
     * jdbc连接数据库--封装之后
     */
    public static void test02(){
        //查询语句
        String strSql = "select * from emp";
        //封装对象实例化
        DBProvider dbProvider = new DBProvider();
        //将返回的ResultSet结果集赋给resultSet
        ResultSet resultSet = dbProvider.query(strSql);
        //遍历
            try {
                while (resultSet.next()) {
                    System.out.println(resultSet.getObject(2));
                }
            } catch (Exception throwables) {
                throwables.printStackTrace();
            }



    }

    /**
     * jdbc连接数据库操作
     */
    public static void test01(){
        //0.准备数据库连接的相关参数
            //Oracle驱动器的OracleDriver路径
        String strDriver = "oracle.jdbc.driver.OracleDriver";
            //数据库服务器的连接串
        // orcl 表示Oracle数据库安装的实例名，默认是orcl，如果不是默认，则改成自己的
        String strURL = "jdbc:oracle:thin:@localhost:1521:XE";
        //登录数据库的用户名
        String userName = "scott";
        //密码
        String userPsw = "a123456";


        try {
        //1.加载数据库驱动类[使用反射]
        // 如果jvm中没有数据库驱动类Driver实例对象，会自动根据连接串类型进行加载数据库驱动类的实例.
        // Class.forName(strDriverName4Mysql8); // 这一行可以不用写，jvm会自动加载
            Class.forName(strDriver);
        //2.通过DriverManger类的静态方法获取数据库的连接对象Connection
            Connection connection = DriverManager.getConnection(strURL,userName,userPsw);
        //3.通过数据库连接对象获取查询器Statement
            Statement statement = connection.createStatement();
        //4.准备数据库的SQL语句用于处理业务逻辑
            String strSql = "select * from emp";
        //5.使用查询器执行sql查询语句返回ResultSet结果集
            ResultSet resultSet = statement.executeQuery(strSql);
        //6.遍历ResultSet的结果集
            if (resultSet != null){
                while (resultSet.next()){
                    System.out.println(resultSet.getObject(2));
                }
            }
            /*// 将游标指针重新放置到第一行数据集之前，最开始的位置
            resultSet.beforeFirst();
            // 关闭连接
            //connection.close();
            while (resultSet.next()){
                System.out.println(resultSet.getObject(1)+" "+resultSet.getObject(2));
            }*/

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
}
